iT邦幫忙

2022 iThome 鐵人賽

DAY 21
1
AI & Data

語言學與NLP系列 第 21

Day 21 資訊熵 Entropy 、交叉熵 Cross-entropy 於 NLP 之應用 介紹篇

  • 分享至 

  • xImage
  •  

今天要談到的是 entropy。Entropy 其實原本是熱力學中的理論,用於度量一個熱力學系統的無序程度(表達原子在空間當中的分布狀況,如果原子分佈愈混亂,entropy 就愈高)。

資訊熵 Entropy

在 1948 年,Claude Elwood Shannon 將熱力學的熵引入到資訊理論,因此它又被稱為 Shannon entropy。資訊理論的 entropy 又是在描述什麼呢?在資訊理論中,entropy 是接收的每條消息中包含的資訊的平均量,又被稱為資訊熵、信源熵、平均資訊本體量。所以 entropy 就是單一事件中的機率 (期望值)。在資訊世界,entropy 愈高,則能傳輸越多的資訊,entropy 越低,則傳輸的資訊越少。換句話說,我們可以透過計算 entropy 來得知其所含有的資訊量,當資訊愈確定且單一, entropy 愈小;資訊愈不確定、愈混亂,entropy 愈大。

下圖是 Shannon entropy 的公式:

entropy

其中:

  • n = 字母總數
  • b = 熵的單位
  • Pi = 單一字母出現的機率
  • −logbPi = 該字母攜帶的資訊量

看到這裡,應該不難理解為什麼 entropy 也能應用在 NLP 任務中了吧?沒錯!它可以用來計算一篇文本中的詞彙複雜程度(所包含的新詞量、特別的字彙)。因為在一篇文本中,若某個字頻繁地出現,代表此篇文本絕大部分都有該特徵,因此,該特徵的代表性不足以幫助識別不同的字詞。然而,若此時出現了一個之前沒有出現過的新詞彙,其所帶的特徵與文本中大部分的字彙有所不同(所謂資訊量大),它的 entropy 就會很高。Shannon entropy 看起來很美好,然而它有一個問題,就是它在有限的 corpus 裡面沒有遍歷性(Ergodicity),可能導致計算不夠精確。

所謂遍歷性是指一個隨機的過程中,統計結果在時間上的平均數與空間上的平均數相等。舉個投資理財的例子(https://justininvesting.wordpress.com/2018/04/30/skin-in-the-game-ergodicity/):

情境1:昨天晚上有100個人去一家賭場賭博,其中99個人賭完都沒事,只有一個人賭到輸光了。那請問,這家賭場是不是一個危險場所?答案似乎是並不危險,因為輸光的機率只有1%。

情境2:同一家賭場,假設去一次輸光的機率是1%。那請問,如果同一個人,連續去了這家賭場100次,他輸光的機率有多大?答案是,他肯定會輸光。

上面 2 個情境皆不具備遍歷性,因為在空間上(同一時間一群人的集合:賭場裡面的人)的數學期望,和時間上(一個人連續去很多次)的數學期望是不一樣的。

如果一個系統具有遍歷性,在兩個情境之下的結果應該是相同的。就像重覆拋一個硬幣,正面與反面的機率各為50/50,和我也重複拋一個硬幣,正面與反面的機率也是各為 50/50,這就表示拋硬幣這個隨機過程是具有遍歷性。

也因為這樣的問題,NLP 中計算 entropy 的方式出現了改良版 Zhang's Estimation,公式如下:

z

  • T : 文本中的 token 總數。
  • V : 文本中的 type 數。
  • fi : 文本中第 i 個詞的觀察頻率。
    • 小小補充一下 token 和 type 的差別:"A rose is a rose is a rose" 這句話中共有 8 個 token 3 個 type 。

使用 Zhang's Estimation 的優點:

  • 找到並使用某些未被字母表子集覆蓋到的特徵。
  • 減少最大似然近似 (Maximum Likelihood) 中的偏差。
  • 減省時間和內存空間。

交叉熵 Cross-entropy

講完了 entropy,我們也來了解一下什麼是 cross entropy 吧!cross entropy 的公式如下:

cross entropy

交叉熵是表示兩個幾率分佈 p, q,其中 p 表示真實分佈,q 表示非真實分佈。在相同的一組事件中,用非真實分佈 q 來表示某個事件發生所需要的平均 byte。此公式可以依照下面步驟來理解。

  1. 假設現在有一個樣本集中兩個機率分佈 p, q,其中 p 為真實分佈,q 為非真實分佈。假如,按照真實分佈 p 來衡量識別一個樣本所需要的編碼長度的期望為:

p

  1. 但是,如果採用錯誤的分佈 q 來表示來自真實分佈 p 的平均編碼長度,則應該是:

q

此時就將H(p,q)稱之為 cross entropy。

Cross entropy 可在神經網絡(機器學習)中作為損失函數 loss function,p 表示真實標記的分佈,q 則為訓練後的模型的預測標記分佈。交叉熵損失函數可以衡量 p 與 q 的相似性。在語言模型中(NLP)中,由於真實的分佈 p 是未知的,模型是通過訓練集得到的,cross entropy 就是衡量這個模型在測試集上的正確率。

今天就介紹到這邊,明天進行實作解說!


上一篇
Day 20 主成分分析 Principal Component Analysis (PCA)
下一篇
Day 22 資訊熵 Entropy 、交叉熵 Cross-entropy 於 NLP 之應用 實作篇
系列文
語言學與NLP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言